#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int n = 0, l = 0, r = 0;
    cin >> n >> l >> r;
    vector<int> a(n);
    for(int i = 0; i < n; ++i)
    {
        cin >> a[i];    
    }
    sort(a.begin(), a.end());
    
    long long res = 0;
    for(int i = 0; i < n; ++i) // 二分
    {
        int left = -1, right = -1;
        auto it1 = lower_bound(a.begin(), a.end(), a[i] + l); // 找第一个大于等于a[i] + l的
        left = it1 - a.begin();
        
        auto it2 = upper_bound(a.begin(), a.end(), a[i] + r); // 找第一个大于a[i] + r的
        right = it2 - a.begin() - 1;
        
        if(left != -1 && right != -1 && right >= left)
            res += right - left + 1;
    }
    cout << res << endl;
    
//     int begin = 0, end = 1, res = 0, flag = 0; // 用的滑动窗口，没想到加前缀和，所以错了
//     while(begin < end && end < n)
//     {
//         //cout << begin << " " << end << " res " << a[end] - a[begin] << endl;
//         while(end < n)
//         {
//             //cout << begin << " and " << end << " res " << a[end] << " "<< a[begin] << endl;
//             if(a[end] - a[begin] >= l && a[end] - a[begin] <= r)
//             {
//                 ++res;
//                 if(a[end] - a[begin] == r)
//                     break;
//             }
//             ++end;
//         }
//         ++begin;
// //         end = flag;
//         end = begin + 1;
//     }
    return 0;
}